package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Titulo;
import br.com.foxinline.servico.TituloServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarTitulo implements Serializable {
    
    @EJB
    TituloServico tituloServico;
    
    private Titulo tituloPesquisar;
    private Titulo tituloVisualizar;
    private Titulo tituloDeletar;

    private List<Titulo> titulos;
    
    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }
    
    private void instanciar() {
        this.tituloDeletar = new Titulo();
        this.tituloPesquisar = new Titulo();
        this.titulos = new ArrayList<Titulo>();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("tituloId");
        
        if (this.visualizarId != null) {
            this.tituloVisualizar = tituloServico.pesquisar(Long.parseLong(this.visualizarId));
        }
    }
    
    public void pesquisar() {        
        this.titulos = tituloServico.pesquisar(this.tituloPesquisar);
    }
    
    public void limpar() {
        instanciar();
    }
    
    public void deletar() {
        tituloServico.deletar(this.tituloDeletar);
        
        pesquisar();
        
        ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        FacesContext fc = FacesContext.getCurrentInstance();
        FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "Título excluído com sucesso!", ""));
        fc.getExternalContext().getFlash().setKeepMessages(true);

        try {
            context.redirect("pesquisarTitulo.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(ManagerPesquisarTitulo.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Titulo getTituloDeletar() {
        return tituloDeletar;
    }

    public void setTituloDeletar(Titulo tituloDeletar) {
        this.tituloDeletar = tituloDeletar;
    }

    public Titulo getTituloPesquisar() {
        return tituloPesquisar;
    }

    public void setTituloPesquisar(Titulo tituloPesquisar) {
        this.tituloPesquisar = tituloPesquisar;
    }

    public Titulo getTituloVisualizar() {
        return tituloVisualizar;
    }

    public void setTituloVisualizar(Titulo tituloVisualizar) {
        this.tituloVisualizar = tituloVisualizar;
    }

    public List<Titulo> getTitulos() {
        return titulos;
    }

    public void setTitulos(List<Titulo> titulos) {
        this.titulos = titulos;
    }

}
